package graphviz.MetaModel;

import java.util.ArrayList;
import java.util.List;

import partager.TypeSousElement;
import partager.TypeSousElementVar;

import utils.Utils;

/**
 * Sous elements d'un element DOT
 */
public class LigneElementDot 
{
	private TypeSousElement type;
	private String nom;
	private TypeSousElementVar output;
	private List<TypeSousElementVar> input;

	/**
	 * Constructeur par default
	 */
	public LigneElementDot() 
	{
		this.type = null;
		this.nom =  null;
		this.output =  null;
		this.input =  null;
	}
	
	/**
	 * Constructeur par recopie
	 */
	public LigneElementDot(TypeSousElement type, String nom, TypeSousElementVar output, List<TypeSousElementVar> input) 
	{
		this.type = type;
		this.nom = nom;
		this.output = output;
		this.input = input;
	}
	
	/**
	 * getter and setter
	 */
	public TypeSousElement getType() {return type;}
	public void setType(TypeSousElement type) {this.type = type;}
	
	public String getNom() {return nom;}
	public void setNom(String nom) {this.nom = nom;}
	
	public TypeSousElementVar getOutput() {return output;}
	public void setOutput(TypeSousElementVar output) {this.output = output;}
	
	public List<TypeSousElementVar> getInput() {return input;}
	public void setInput(List<TypeSousElementVar> input) {this.input = input;}
	public void add(TypeSousElementVar sousElement)
	{
		if(this.input == null) this.input = new ArrayList<TypeSousElementVar>();
		this.input.add(sousElement);
	}
	
	/**
	 * methodes object
	 */
	public boolean equals(Object o)
	{
		if(o == null) return false;
		
		if(o instanceof LigneElementDot)
		{
			LigneElementDot objet = (LigneElementDot) o;
			
			if(!Utils.equals(this.getType(), objet.getType())) return false;
			if(!Utils.equals(this.getNom(), objet.getNom())) return false;
			if(!Utils.equalsList(this.getInput(), objet.getInput())) return false;
			if(!Utils.equals(this.getOutput(), objet.getOutput())) return false;
			
			return true;
		}
		return false;
	}
}
